﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace BLL
{
    public class bllCartao
    {
        #region Conexão e Variáveis privadas
        Love_Dados.Dados dados = new Love_Dados.Dados();
        Cartao _objCartao;
        #endregion

        #region Construtores
        public bllCartao()
        {
        }
        public bllCartao(int pCar_Id_Cartao)
        {
            DataTable dt = GetDados(pCar_Id_Cartao, 0);
            if (dt.Rows.Count > 0)
            {
                objCartao.Car_Id_Cartao = Convert.ToInt32(dt.Rows[0]["car_Id_Cartao"].ToString());
                objCartao.Car_tx_NomeCartao = dt.Rows[0]["car_tx_NomeCartao"].ToString();
                objCartao.Car_tx_TipoCartao = dt.Rows[0]["car_tx_TipoCartao"].ToString();
                objCartao.Car_tx_NumeroCartao = dt.Rows[0]["car_tx_NumeroCartao"].ToString();
                objCartao.Car_dt_ValidadeCartao = Convert.ToDateTime(dt.Rows[0]["car_dt_ValidadeCartao"].ToString());
                objCartao.Car_int_DiaVenctoFatura = Convert.ToInt32(dt.Rows[0]["car_int_DiaVenctoFatura"].ToString());
                objCartao.agr_Id_AplGroup = Convert.ToInt32(dt.Rows[0]["agr_Id_AplGroup"].ToString());
            }
        }
        #endregion

        #region Propriedade - Modelo do Objeto
        public Cartao objCartao
        {
            get
            {
                if (_objCartao == null)
                    _objCartao = new Cartao();
                return _objCartao;
            }
        }
        #endregion

        #region Gravação, Exclusão e Lista
        public int SetCartao()
        {
            if (objCartao.Car_Id_Cartao == 0)
                objCartao.Car_Id_Cartao = dados.ExecutaInsert
                                          (
                                            "spcManCartao",
                                            objCartao.Car_Id_Cartao,
                                            objCartao.Car_tx_NomeCartao,
                                            objCartao.Car_tx_TipoCartao,
                                            objCartao.Car_tx_NumeroCartao,
                                            objCartao.Car_dt_ValidadeCartao,
                                            objCartao.Car_int_DiaVenctoFatura,
                                            objCartao.agr_Id_AplGroup
                                          );
            else
                dados.ExecutaUpdate
                (
                  "spcManCartao",
                  objCartao.Car_Id_Cartao,
                  objCartao.Car_tx_NomeCartao,
                  objCartao.Car_tx_TipoCartao,
                  objCartao.Car_tx_NumeroCartao,
                  objCartao.Car_dt_ValidadeCartao,
                  objCartao.Car_int_DiaVenctoFatura,
                  objCartao.agr_Id_AplGroup
                );
            return objCartao.Car_Id_Cartao;
        }
        public void DelCartao(int pCar_Id_Cartao)
        {
            dados.ExecutaDelete("spcDelCartao", pCar_Id_Cartao);
        }
        public DataTable GetDados(int pCar_Id_Cartao, int pAgr_Id_AplGroup)
        {
            return dados.ExecutaSelect
                   (
                     "spcGetCartao", 
                     pCar_Id_Cartao,
                     pAgr_Id_AplGroup
                   ).Tables[0];
        }
        #endregion
    }

    public class Cartao
    {
        public int Car_Id_Cartao { get; set; }
        public string Car_tx_NomeCartao { get; set; }
        public string Car_tx_TipoCartao { get; set; }
        public string Car_tx_NumeroCartao { get; set; }
        public DateTime Car_dt_ValidadeCartao { get; set; }
        public int Car_int_DiaVenctoFatura { get; set; }
        public int agr_Id_AplGroup { get; set; }
    }
}
